cmake_minimum_required(VERSION 3.8)
project(path_plan)

if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")
  add_compile_options(-Wall -Wextra -Wpedantic)
endif()

# find dependencies
find_package(ament_cmake REQUIRED)
find_package(rclcpp REQUIRED)
find_package(std_msgs REQUIRED)
find_package(moveit_ros_planning_interface REQUIRED)
find_package(Qt5 REQUIRED COMPONENTS Core Widgets)

# 添加可执行文件
add_executable(path1_fc src/path1_fc.cpp)
ament_target_dependencies(path1_fc rclcpp moveit_ros_planning_interface)

add_executable(path1 src/path1.cpp)
ament_target_dependencies(path1 rclcpp moveit_ros_planning_interface)

add_executable(cartesian_path src/cartesian_path.cpp)
ament_target_dependencies(cartesian_path rclcpp moveit_ros_planning_interface)

add_executable(force2middlepath1 src/force2middlepath1.cpp)
ament_target_dependencies(force2middlepath1 rclcpp moveit_ros_planning_interface)

add_executable(force2middlepath2 src/force2middlepath2.cpp)
ament_target_dependencies(force2middlepath2 rclcpp moveit_ros_planning_interface)

add_executable(force2middlepath3 src/force2middlepath3.cpp)
ament_target_dependencies(force2middlepath3 rclcpp moveit_ros_planning_interface)

add_executable(f2m_eyecontrol src/f2m_eyecontrol.cpp)
ament_target_dependencies(f2m_eyecontrol rclcpp moveit_ros_planning_interface)


# add_executable(cartesian_path_visual src/cartesian_path_visual.cpp)
# ament_target_dependencies(cartesian_path_visual rclcpp moveit_ros_planning_interface)

add_executable(interface src/interface.cpp)
ament_target_dependencies(interface rclcpp moveit_ros_planning_interface)

# 安装可执行文件
install(TARGETS path1_fc path1 interface cartesian_path force2middlepath1 force2middlepath2 force2middlepath3 f2m_eyecontrol
  DESTINATION lib/${PROJECT_NAME}
)

#####导出头文件路径和动态库路径供其他包使用
add_library(path_plan SHARED
  ${CMAKE_CURRENT_SOURCE_DIR}/src/cartesian_path.cpp
  ${CMAKE_CURRENT_SOURCE_DIR}/src/cartesian_path_visual.cpp
)
target_include_directories(path_plan PUBLIC
  $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
  $<INSTALL_INTERFACE:include>)
ament_target_dependencies(
  path_plan
  rclcpp
  moveit_ros_planning_interface
)
ament_export_include_directories(include)
install(DIRECTORY include/
  DESTINATION include
)
install(
        TARGETS path_plan
        LIBRARY DESTINATION lib
        )
ament_export_libraries(${PROJECT_NAME})
#####导出头文件路径和动态库路径供其他包使用


if(BUILD_TESTING)
  find_package(ament_lint_auto REQUIRED)
  # the following line skips the linter which checks for copyrights
  # comment the line when a copyright and license is added to all source files
  set(ament_cmake_copyright_FOUND TRUE)
  # the following line skips cpplint (only works in a git repo)
  # comment the line when this package is in a git repo and when
  # a copyright and license is added to all source files
  set(ament_cmake_cpplint_FOUND TRUE)
  ament_lint_auto_find_test_dependencies()
endif()

install(DIRECTORY launch
  DESTINATION share/${PROJECT_NAME}
)


ament_package()
